#pragma once
#include <cassert>

#ifdef THREAD_SAFE
#include <mutex>
#endif // THREAD_SAFE

#ifdef DEBUG
#define ASSERT(x)  assert(x)
#else
#define ASSERT(x)
#endif

#ifdef THREAD_SAFE
#define MUTEX(x) mutable std::mutex x
#define MUTEX_GUARD(x) std::lock_guard<std::mutex> lck(x)
#else
#define MUTEX(x)
#define MUTEX_GUARD(x)
#endif